#nullable enable

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace PHMEE.EnergyEfficiency;

public interface IFlowMeterTdRepository
{
    Task<List<FlowMeterOilValueTde>> GetListAsync(Guid vesselId, DateTime startDateTimeUtc,
        DateTime endDateTimeUtc, string flowMeterName, TdOrder tdOrder, TdRangeEdge tdRangeEdge);

    Task<FlowMeterOilValueTde?> GetLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc,
        string flowMeterName);

    // Task<FuelType?> GetLatestFuelTypeAsync(Guid vesselId, DateTime dateTimeUtc, string flowMeterName);

    // Task<List<FlowMeterOilValueTde>> GetMeInListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);
    //
    // Task<List<FlowMeterOilValueTde>> GetMeOutListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);
    //
    // Task<List<FlowMeterOilValueTde>> GetAeInListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);
    //
    // Task<List<FlowMeterOilValueTde>> GetAeOutListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);
    //
    // Task<List<FlowMeterOilValueTde>> GetBoInListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);
    //
    // Task<List<FlowMeterOilValueTde>> GetBoOutListAsync(Guid vesselId, DateTime startDateTimeUtc,
    //     DateTime endDateTimeUtc, TdOrder tdOrder, TdRangeEdge tdRangeEdge);

    // Task<FuelType?> GetMeLatestFuelTypeAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FuelType?> GetAeLatestFuelTypeAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FuelType?> GetBoLatestFuelTypeAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FuelFlowMeterConfig> GetFlowMeterConfigAsync(Guid vesselId);
    //
    // Task<FlowMeterOilValueTde?> GetMeInLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FlowMeterOilValueTde?> GetMeOutLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FlowMeterOilValueTde?> GetAeInLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FlowMeterOilValueTde?> GetAeOutLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FlowMeterOilValueTde?> GetBoInLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
    //
    // Task<FlowMeterOilValueTde?> GetBoOutLatestFuelOilValueAsync(Guid vesselId, DateTime dateTimeUtc);
}